<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0046)http://www.vovisoft.com/dotNET/Bai01/Bai01.htm -->
<HTML><HEAD><TITLE>.NET Lesson 01</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META http-equiv=Content-Language content=vi>
<META content="MSHTML 5.50.4134.100" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId>
<META 
content="Visual Basic, VB Programming in Vietnamese, Vovisoft, VB6, VB Tutorials, Learn Visual Basic, Internet, Unicode, Vietnamese VB tutorials, Database, Asp, Java, Javascript, VBscript, FrontPage 2000, XML, Ms Office 2000, .NET&#13;&#10;, ASP.NET" 
name=keywords></HEAD>
<BODY leftMargin=0 topMargin=0 marginheight="0" marginwidth="0">
<CENTER><A href="http://www.vovisoft.com/"><IMG height=77 alt="Logo of Vovisoft" 
src="Bai 1_files/vs-logo4_10.gif" width=102 border=0> </A><FONT face=Tahoma>
<H2><FONT face=Tahoma color=#800000>Bài 1</FONT></H2>
<H2><FONT face=Tahoma color=#800000>Microsoft .NET Framework</FONT></H2>
<P>&nbsp;</P>
<TABLE id=AutoNumber1 style="BORDER-COLLAPSE: collapse" borderColor=#111111 
cellSpacing=0 cellPadding=4 width="60%" border=1>
  <TBODY>
  <TR>
    <TD align=middle width="100%" colSpan=2><FONT face=Tahoma><SPAN 
      lang=en-au><FONT size=2><FONT color=#ff0000>Xin cáo lỗi:</FONT> rất tiếc 
      là server chúng tôi không cho phép chứa các files MP3 nên chúng tôi sẽ tìm 
      cách khác để cho đọc giả download sau. Nếu các bạn có ý kiến hay về cách 
      cho download các MP3 files này thì xin liên lạc với <A 
      href="mailto:dixon@vovisoft.com">webmaster</A>.</FONT></SPAN></FONT></TD></TR>
  <TR>
    <TD align=middle width="50%"><B><SPAN lang=en-au><FONT size=2>Thu âm bài 
      giảng (MP3) </FONT></SPAN></B></TD>
    <TD align=middle width="50%"><B><SPAN lang=en-au><FONT size=2>download 
      size</FONT></SPAN></B></TD></TR>
  <TR>
    <TD align=middle width="50%"><SPAN lang=en-au><FONT size=2><A 
      href="http://www.vovisoft.com/dotNET/Bai01/mp3/wk1_1.mp3">Week 
      1.1</A><BR><A 
      href="http://www.vovisoft.com/dotNET/Bai01/mp3/wk1_2.mp3">Week 
      1.2</A><BR></FONT></SPAN><FONT face=Tahoma><SPAN lang=en-au><FONT 
      size=2><A href="http://www.vovisoft.com/dotNET/Bai01/mp3/wk1_3.mp3">Week 
      1.3</A><BR><A 
      href="http://www.vovisoft.com/dotNET/Bai01/mp3/wk1_4.mp3">Week 
      1.4</A><BR><A 
      href="http://www.vovisoft.com/dotNET/Bai01/mp3/wk1_5.mp3">Week 
      1.5</A><BR><A 
      href="http://www.vovisoft.com/dotNET/Bai01/mp3/wk1_6.mp3">Week 
      1.6</A><BR><A 
      href="http://www.vovisoft.com/dotNET/Bai01/mp3/wk1_7.mp3">Week 
      1.7</A><BR><A 
      href="http://www.vovisoft.com/dotNET/Bai01/mp3/wk1_8.mp3">Week 
      1.8</A></FONT></SPAN></FONT></TD>
    <TD align=middle width="50%"><SPAN lang=en-au><FONT size=2>1.2 mb<BR>1.2 
      mb<BR>0.6 mb<BR></FONT></SPAN><SPAN lang=en-au><FONT face=Tahoma 
      size=2>1.2 mb<BR>1.2 mb<BR>1.2 mb</FONT><FONT 
      size=2><BR></FONT></SPAN><SPAN lang=en-au><FONT face=Tahoma size=2>1.4 
      mb<BR>1.4 mb</FONT></SPAN></TD></TR></TBODY></TABLE></CENTER>
<BLOCKQUOTE>
  <BLOCKQUOTE>
    <H3>Cài đặt Visual Studio.NET Beta 2</H3>Visual Studio.NET nằm trong 3 CDs, 
    gồm có 4 files: 
    <UL>
      <LI>EN_VS_NET_BETA2_WINCUP.exe 
      <LI>EN_VS_NET_BETA2_CD1.exe 
      <LI>EN_VS_NET_BETA2_CD2.exe 
      <LI>EN_VS_NET_BETA2_CD3.exe </LI></UL>Chạy EN_VS_NET_BETA2_WINCUP.exe để 
    Unzip nó vào một folder trong một harddisk (eg: E:\CD\WINCUP) .<BR>Lần lượt 
    chạy EN_VS_NET_BETA2_CD1.exe, EN_VS_NET_BETA2_CD2.exe và 
    EN_VS_NET_BETA2_CD3.exe để Unzip chúng vào chung một folder trong một 
    harddisk (eg: E:\CD ).<BR>Việc Unzip files có thể rất lâu, bạn phải kiên 
    nhẫn chờ cho đến khi nó kết thúc. Nếu không, khi cài đặt có thể bị than 
    phiền là thiếu files.<BR>Kế đó, trước hết chạy Setup.exe của Windows 
    Component Update như dưới đây, click <B>No</B> khi Warning dialog hiện 
    ra:<BR><BR><IMG height=237 src="Bai 1_files/wincup.gif" 
    width=864><BR><BR><BR><BR><IMG height=454 
    src="Bai 1_files/wincompupdate.gif" width=501><BR><BR><BR><BR>Tiếp theo, 
    chạy Setup.exe của Visual Studio.NET:<BR><BR><IMG height=330 
    src="Bai 1_files/NETSetup.gif" width=784><BR><BR><BR><BR><IMG height=571 
    src="Bai 1_files/VSGlance.gif" width=756><BR><BR><BR><BR><IMG height=571 
    src="Bai 1_files/VSNET.gif" width=756><BR><BR><BR><BR>Bạn nên có CPU Pentium 
    III, 500MHz trở lên, với 256 MB RAM và ít nhất 10GB Harddisk. Về OS bạn nên 
    dùng Windows 2000 (Professional hay Server) hay Windows XP. Lý do chính là 
    các versions Windows nầy hổ trợ Unicode và có Internet Information Server 
    (IIS) hổ trợ ASPX để ta dùng cho ASP.NET.<BR><BR>
    <H3>Mở các Samples của QuickStart</H3>Trước khi expand Samples của 
    Quickstart bạn cần phải cài đặt IIS. Nếu chưa làm việc ấy bạn bỏ CD của 
    Windows2000 hay WindowsXP vào để install IIS component.<BR>QuickStart 
    Samples của .NET Framework chứa các giải thích căn bản và nhiều thí dụ. Để 
    expand các Samples doubleclick Webpage <B>Starthere.htm</B> như trong hình 
    dưới đây:<BR><BR><IMG height=255 src="Bai 1_files/Starthere.gif" 
    width=777><BR><BR><BR><BR>Khi trang Web của QuickStart hiện ra, click 
    <B>QuickStart, tutorials and samples</B> rồi sau đó theo chỉ dẫn từng 
    bước.<BR><BR><IMG height=572 src="Bai 1_files/QuickStart.gif" 
    width=687><BR><BR><BR><BR>Trang Framework SDK QuickStart Tutorials cho ta 
    các bài tập của <B>ASP.NET, Windows Forms</B> và <B>How Do 
    I...</B><BR><BR><IMG height=600 src="Bai 1_files/QuickStartTut.gif" 
    width=800><BR><BR><BR>Nhớ để nguyên các folders của Unzipped files (E:\CD, 
    E:\CD\WINCUP), đừng delete chúng, vì .NET sẽ còn dùng chúng. Ngoài ra, nếu 
    sau nầy .NET bị corrupted vì conflict với các application software khác, bạn 
    có thể cài đặt .NET lại. 
    <H3>Giới hạn của Software Tools hiện giờ</H3>Architect của application 
    software hiện giờ có nói chung ba tầng (three tiers): tầng giao diện 
    (Presentation Tier), tầng giữa (Middle Tier) và tầng dữ kiện (Data 
    Tier):<BR><BR><B>Presentation Tier</B>: Trong desktop Client ta dùng VB6 và 
    nối với middle tier qua DCOM. Trong browser based Client ta dùng Javascript 
    hay Java applet. Từ browser based Client ta dùng http để nối với middle tier 
    qua IIS/ASP (có thể dùng COM ở đây).<BR><BR><B>Middle Tier</B>: Chứa các 
    rules để validate data trên client và các business rules khác. Ta dùng VB6 ở 
    đây, nhưng cách triển khai COM với những Object Oriented Programming 
    concepts rắc rối hơn bình thường. Ta phải thiết kế sao cho các components 
    scale well (dùng cho mọi cở). Có khi dùng Microsoft Transaction Server trên 
    Windows NT hay COM+ Services trên Windows 2000. Lấp ráp các versions của 
    components là một thách thức lớn.<BR>Nhiều khi middle tier còn nói chuyện 
    với các database qua HTTP, ADO và CDO (Collaborative Data Objects), 
    .v.v..<BR><BR><B>Data Tier</B>: Thường là relational database như Microsoft 
    SQL Server hay Oracle. Ngoài ra còn có Exchange hay các database xưa của 
    mainframe.<BR><BR>Do đó ta thấy:<BR><BR>
    <UL>
      <LI>Desktop tools không thích hợp cho Distributed System hay 
      Internet<BR>Phải dùng nhiều thứ codes như VB6 Code, VBScript, JavaScript, 
      Dynamic HTML, Cascading Style Sheet, VC++, Stored Procedures (Transact-SQL 
      trong SQLServer hay PL-SQL trong Oracle). 
      <LI>Tùy thuộc quá nhiều vào central database: Ngay cả ADO dù là tiện dụng 
      cũng đòi hỏi Client luôn luôn connect với Server. Điều nầy không thích hợp 
      cho Internet applications, vì bản chất của Internet là <B>stateless</B> 
      (không giữ trạng thái), mỗi lần cần làm việc mới connect lại một chút 
      thôi. 
      <LI>DLL "Hell": Các ActiveX cần phải được registered với Windows Registry, 
      chỉ có một version được chấp nhận. Nếu version mới nhất của một DLL không 
      compatible với các versions trước đó mà applications trên máy đang cần thì 
      có rắc rối. </LI></UL>
    <H3>Giới hạn của VB6</H3><IMG height=508 
    src="Bai 1_files/VB6Application.gif" width=488><BR><BR><BR>
    <UL>
      <LI>Thiếu khả năng inheritance (thừa kế) và một số Object Oriented 
      features khác. 
      <LI>Khả năng Error handling giới hạn: On Error Goto ..., On Error Resume 
      Next 
      <LI>Nhiều khi cần phải gọi Windows API để làm những việc VB6 không hổ trợ: 
      việc nầy không tự nhiên và đôi khi nguy hiểm. 
      <LI>Không có multi-threading: không thể đoán trước response của code chạy 
      trong các windows của cùng một VB6 application. Ngay cả giải quyết vấn đề 
      multitasking bằng Timers cũng không đáng tin cậy. 
      <LI>Không dễ dùng chung với các ngôn ngữ khác như VC++. 
      <LI>Không tiện cho Web development: WebClass không thành công lắm. Ít ai 
      chịu cho ta cài ActiveX trên máy của họ. </LI></UL>
    <H3>.NET Framework</H3>.NET được developed từ đầu năm 1998, lúc đầu có tên 
    là <B>Next Generation Windows Services (NGWS)</B>. Nó được thiết kế hoàn 
    toàn từ con số không để dùng cho Internet. Viển tượng của Microsoft là xây 
    dựng một <B>globally distributed system</B>, dùng <B>XML</B> (chứa những 
    databases tí hon) làm chất keo để kết hợp chức năng của những computers khác 
    nhau trong cùng một tổ chức hay trên khắp thế giới.<BR>Những computers nầy 
    có thể là Servers, Desktop, Notebook hay Pocket Computers, đều có thể chạy 
    cùng một software dựa trên một platform duy nhất, độc lập với hardware và 
    ngôn ngữ lập trình. Đó là .NET Framework. Nó sẽ trở thành một phần của MS 
    Windows và sẽ được port qua các platform khác, có thể ngay cả 
    Unix.<BR><BR>Mặc dầu hãy còn là Beta, .NET Framework rất stable và Visual 
    Studio.NET rất ít bugs, có thể dùng cho software development ngay từ bây 
    giờ. Hiện nay đã có một số sách về lập trình .NET do <A 
    href="http://www.vovisoft.com/www.wrox.com">Wrox</A> và Oreilly xuất 
    bản.<BR><BR><IMG height=508 src="Bai 1_files/NETApplication.gif" 
    width=488><BR><BR><BR><BR>Các phần chính của Microsoft.NET 
    Framework:<BR><BR><IMG height=384 src="Bai 1_files/Components.gif" 
    width=632><BR><BR><BR><BR>.NET application được chia ra làm hai loại: cho 
    Internet gọi là <B>ASP.NET</B>, gồm có <B>Web Forms</B> và <B>Web 
    Services</B> và cho desktop gọi là <B>Windows Forms</B>.<BR>Windows Forms 
    giống như Forms của VB6. Nó hổ trợ <B>Unicode</B> hoàn toàn, rất tiện cho 
    chữ Việt và thật sự Object Oriented.<BR>Web Forms có những <B>Server 
    Controls</B> làm việc giống như các Controls trong Windows Forms, nhất là có 
    thể dùng codes để xử lý Events y hệt như của Windows Forms.<BR>Điểm khác 
    biệt chánh giữa ASP (Active Server Pages) và ASP.NET là trong ASP.NET, phần 
    đại diện visual components và code nằm riêng nhau, không lộn xộn như trong 
    ASP. Ngoài ra ASP.NET code hoàn toàn Object Oriented.<BR><BR>Web Services 
    giống như những Functions mà ta có thể gọi dùng từ các URL trên Internet, 
    thí dụ như Credit Card authorisation.<BR><BR><B>ADO.NET</B> là một loại 
    cache database nho nhỏ (gọi là disconnected database) để thay thế ADO. Thay 
    vì application connects vĩnh viễn với database mẹ qua ADO, application trong 
    .NET làm việc với portable database chỉ chứa một hai tables, là copy từ 
    database mẹ. Khi nào cần, portable database nầy (ADO.NET) sẽ được reconciled 
    với database mẹ để update các thay đổi. Hai tables trong ADO.NET có thể được 
    <B>related</B> nhau trong <B>Master/Details relationship</B>. Vì ADO.NET có 
    chứa original data lẫn data mới nhất nên <B>Rollback</B> trong ADO.NET rất 
    dễ dàng và nhẹ ký.<BR><BR><B>XML</B> được yểm trợ tối đa. Nằm phía sau 
    ADO.NET là XML. XML có thể là Table of records trong ADO.NET hay Tree of 
    nodes trong <B>DOM (Document Object Model)</B>.<BR><BR><B>IO</B> được hổ trợ 
    bằng toàn bộ <B>Stream</B> kể cả <B>Memory Stream</B> và 
    <B>StreamReader/StreamWriter</B>. Thêm vào là DataFormatting cho 
    <B>Serialisation</B> để chứa Object xuống binary file hay text 
    file.<BR><BR><B>TCP/IP</B> và <B>http</B> là hai protocols thông dụng nhất 
    trong .NET, nhưng chúng làm việc phía sau sân khấu giúp ta gọi một remote 
    procedure (nằm trên computer khác) dễ dàng như một local procedure. Kỹ thuật 
    ấy gọi là <B>Remoting</B>.<BR><BR><B>Security</B> hổ trợ <B>Cryptography, 
    Permissions</B> và <B>Policy</B>.<BR><BR><B>Diagnostics</B> cho ta 
    <B>Debug</B> và <B>Trace</B>.<BR><BR><B>Threading</B> rất tiện và đơn giản 
    để implement <B>Lightweight Process</B>. Vấn đề Timing trong .NET program 
    rất linh động, hiệu quả và chính xác.<BR><BR>Việc thiết kế Common Language 
    Runtime nhắm vào các mục tiêu chính sau đây:<BR>
    <UL>
      <LI>Việc triển khai đơn giản và nhanh hơn: developers sẽ dành thì giờ 
      quyết định ráp những software components nào lại với nhau nhiều hơn là lập 
      trình thật sự. 
      <LI>Các công tác thiết yếu ("plumbing") như memory management, process 
      communication .v.v. được lo liệu tự động. 
      <LI>Các công cụ hổ trợ rất đầy đủ (no more API): .NET Framework Base 
      classes rất phong phú cho file, network, serialisation, mã hóa, XML, 
      database, v.v.. 
      <LI>Cài đặt đơn giản và an toàn (no more DLL "hell"): chỉ cần xcopy files, 
      giống như thời vàng son của DOS. Lý do là .NET application chạy trên .NET 
      framework, một khi ta đã cài .NET framework vào máy rồi thì có đầy đủ mọi 
      .DLL cần thiết. Có lẽ trong tương lai Microsoft cài .NET framework chung 
      với Windows. 
      <LI>Dùng cho từ WindowsCE đến Desktop, đến Web (scalability). </LI></UL><IMG 
    height=344 src="Bai 1_files/CLR.gif" width=704><BR><BR><BR><BR>
    <H3>Metadata</H3><B>Metadata</B> là các dữ kiện cắt nghĩa cho ta biết về dữ 
    kiện. Thí dụ <B>XML Schema</B> của một XML file là metadata cắt nghĩa về 
    data structure của data trong XML file. Chính cái XML Schema cũng là một XML 
    file. Các .NET application components, gọi là <B>Assembly</B>, chứa rất 
    nhiều metadata để cắt nghĩa về chính nó (self describing). Tìm biết về một 
    .NET application để có thể làm việc với nó thì gọi là 
    <B>Reflection</B>.<BR><BR>
    <H3>Hổ trợ và phối hợp mọi ngôn ngữ lập trình</H3><B>Common Language Runtime 
    (CLR)</B> là trung tâm điểm của .NET Famework, nó là hầm máy để chạy các 
    năng tính của .NET. Trong .NET, mọi ngôn ngữ lập trình đều được compiled ra 
    <B>Microsoft Intermediate Language (IL)</B> giống giống như byte code của 
    Java. Nhờ bắt buộc mọi ngôn ngữ đều phải dùng cùng các loại data types (gọi 
    là <B>Common Type System</B>) nên Common Language Runtime có thể kiểm soát 
    mọi interface, gọi giữa các components và cho phép các ngôn ngữ có thể hợp 
    tác nhau một cách thông suốt. Tức là trong .NET, VB.NET program có thể 
    inherit C# program và ngược lại một cách hoàn toàn tự nhiên.<BR>Điều nầy 
    chẳng những giúp các VC++ hay Java programmers bắt đầu dùng C# một cách dễ 
    dàng mà còn làm cùng một dự án với VB.NET programmers nữa.<BR><BR>Nếu VC++ 
    linh động và hiệu năng hơn VB6, thì C# chẳng khác gì VB.NET. Bạn có thể port 
    C# code qua VB.NET code rất dễ dàng. Vì source code VC++ và Java gần gũi C# 
    hơn VB6 với VB.NET nên ngoài đời có nhiều C# code hơn VB.NET. Do đó, mặc dầu 
    hai ngôn ngữ VB.NET và C# đều ngang cơ nhau, nếu dùng C# bạn được lợi điểm 
    có nhiều source code sẵn và nhất là lâu nay người ta vẫn mang ấn tượng rằng 
    VC++ hay Java programmers mới thật sự là các cao thủ lập trình, và có khuynh 
    hướng trả lương các guru VC++/Java cao hơn VB programmers.<BR><BR>Khi chạy 
    .NET application, nó sẽ được compiled bằng một <B>JIT (Just-In-Time) 
    compiler</B> rất hiệu năng ra machine code để chạy. Điểm nầy giúp .NET 
    application chạy nhanh hơn Java interpreted code trong Java Virtual Machine. 
    Just-In-Time cũng có nghĩa là chỉ phần code nào cần xử lý trong lúc ấy mới 
    được compiled. IL code chạy trong CLR đuợc nói là <B>managed 
    code</B>.<BR><BR>.NET code có thể chạy chung với ActiveX, nhưng code trong 
    ActiveX được gọi là <B>unmanaged code</B>, tức là CLR không chịu trách 
    nhiệm.<BR><BR>Ngoài việc allocation và management of memory, CLR còn giữ các 
    refrerence đến objects và đỗ rác (handle <B>garbage collection</B>), tức là 
    thâu lại các mảnh vụn memory khi chúng không cần dùng nữa. Trước đây, mỗi 
    khi một DLL đuợc loaded vào memory, system sẽ ghi nhận có bao nhiêu task 
    dùng nó để khi task cuối cùng chấm dứt thì system unload DLL và trả lại phần 
    memory nó dùng trước đây để system dùng cho chuyện khác. Chớ nếu allocate 
    memory để dùng mà không nhớ dispose nó thì sẽ bị memory leak (rỉ ), lần lần 
    ta dùng hết memory, bị bắt buộc phải reboot OS. Nhưng bây giờ .NET dùng một 
    process độc lập để làm việc garbage collection. Cái phản ứng phụ của việc 
    nầy là khi ta đã <B>Dispose</B> một Object rồi, ta vẫn không biết chắc chắn 
    chừng nào nó mới thật sự biến mất. Vì garbage collector là một low priority 
    process làm việc trong background, chỉ khi nào system memory gần cạn nó mới 
    nâng cao priority lên. Dĩ nhiên, nếu muốn, ta có thể đòi hỏi system Dispose 
    một Object ngay lập tức.<BR><BR>
    <H3>Assembly</H3><IMG height=496 src="Bai 1_files/Assembly.gif" 
    width=488><BR><BR><BR><BR>.NET application xây dựng từ các assemblies. Mỗi 
    <B>assembly</B> phải có một <B>manifest</B>. Có thể nó nằm riêng trong một 
    file hay nằm bên trong một module. Manifest chứa những metadata sau đây: 
    <UL>
      <LI>Tên và Version number của assembly 
      <LI>Những assembly khác (kể cả version number của assembly) mà assembly 
      nầy tùy thuộc vào để chạy 
      <LI>Types (classes và members) mà assembly nầy cho xuất khẩu 
      <LI>Assembly nầy đòi hỏi điều kiện an ninh nào (security permissions) 
    </LI></UL>Manifest cho phép ta dùng hơn một version của assembly (tương 
    đương với DLL trước đây) cùng một lúc. Từ đây không còn register DLL nữa. 
    Thay vào đó, ta chỉ cần copy các assembly vào một subfolder /bin của chương 
    trình chính.<BR><BR>
    <H3>Quyết định của bạn</H3>Sau khi biết qua về .NET, câu hỏi bạn sẽ đặt ra 
    là bạn có nên học lập trình trên .NET hay không. Nói chung, về lập trình có 
    nhiều tôn giáo như VC++/Java, VB6, Delphi ..v.v.. Bạn có thể chọn giữa C# và 
    VB.NET. Đối với VB6 programmers, học lập trình VB.NET sẽ mất một thời gian, 
    nhưng không khó. Nên nhớ rằng .NET không phải chỉ cho ta các ngôn ngữ lập 
    trình, mà cả một hệ thống triển khai phần mềm chú trọng vào mục tiêu hơn là 
    cách thức. Các lợi ích .NET cống hiến cho bạn cách thực tiển là: <BR><BR>
    <UL>
      <LI>Kỹ thuật .NET sẽ hoành hành trên giang hồ trong từ 5 đến 10 năm tới. 
      <LI>Tính trung bình, lập trình trong .NET sẽ tiết kiệm thì giờ cho bạn từ 
      25% đến 50% so với trước đây. Lý do là trong .NET bạn sẽ nghiên cứu để 
      dùng component nào nhiều hơn là thật sự viết code. Hơn nữa, hầu như code 
      nào bạn cần phải viết, bạn sẽ dùng nó lại trong tương lai. Và bảo trì .NET 
      code thì lại càng khỏe hơn trước đây, vì chính bạn có viết bao nhiêu code 
      (có thể bị bugs) đâu mà bảo trì. </LI></UL>Do đó, có lẽ trong tương lai .NET 
    programmers chúng ta sẽ ngủ đến 10 giờ sáng mới thức, một ngày chỉ cần làm 
    việc vài tiếng, rảnh rang để làm vườn, câu cá.<BR><BR>Trong bài tới ta sẽ 
    học về Visual Studio.NET interface và bắt đầu viết thử một program Demo 
    .<BR><BR><A href="http://www.vovisoft.com/"><IMG height=40 
    src="Bai 1_files/homejump.gif" width=40><A>&nbsp;&nbsp;<A 
    href="http://www.vovisoft.com/dotNET/default.asp">Học Microsoft 
    .NET</A><BR><BR></BLOCKQUOTE></FONT><!-- Start of bottom bar for copyright notice etc -->
  <TABLE class=clsNavLinks id=tblFooterLinks cellSpacing=0 cellPadding=0 
  width="100%" border=0>
    <TBODY>
    <TR>
      <TD class=clsRaised width=785 bgColor=#6699cc colSpan=5>
        <P align=center><FONT face=Tahoma color=#ffffff size=1>Vovisoft Â© 2000. 
        All rights reserved.</FONT></P></TD></TR>
    <TR>
      <TD width=256>
        <P align=center><FONT face=Tahoma size=1>&nbsp;&nbsp; Last Updated: <!--webbot 
      bot="Timestamp" S-Type="REGENERATED" S-Format="%d %b %Y" startspan -->12 
        Feb 2002<!--webbot bot="Timestamp" i-checksum="14381" endspan --> 
        </FONT></P></TD>
      <TD width=181><FONT face=Tahoma size=1>&nbsp;</FONT></TD>
      <TD width=258>
        <P align=center><FONT face=Tahoma size=1><A 
        href="mailto:dixon@vovisoft.com">Webmaster</A></FONT></P></TD></TR></TBODY></TABLE><BR></BLOCKQUOTE></BODY></HTML>
